package tool;

import java.io.File;
import java.util.ArrayList;
/**
 * @author FJC
 * 文件工具
 * 列出目录（包含子目录）下的所有指定后缀的文件
 *
 */
public class FileTool {

	/**
	 * 列出目录（包含子目录）下的所有指定后缀的文件
	 * @param path 路径
	 * @param suffix 后缀
	 * @return 文件列表
	 */
	public File[] listFiles(String path, String suffix){
		File file = new File(path);
		if(file.exists()){
			if(file.isDirectory()){
				ArrayList<File> fileList = new ArrayList<File>();
				return listFiles(file, suffix, fileList).toArray(new File[0]);
			}
			else{
				if(suffix!=null && !suffix.equals("") && !path.endsWith(suffix))
					return null;
				return new File[]{file};
			}
		}
		else
			return null;
	}
	/*
	 * 列出目录（包含子目录）下的所有指定后缀的文件
	 */
	private ArrayList<File> listFiles(File file, String suffix, ArrayList<File> fileList){
		File[] files = file.listFiles();
		for(int i=0;i<files.length;i++){
			if(files[i].isDirectory()){
				String dir = file.getAbsolutePath()+File.separator+files[i].getName();
				listFiles(new File(dir), suffix, fileList);
			}
			else{
				if(suffix==null || suffix.equals("") || files[i].getName().endsWith(suffix))
					fileList.add(files[i]);
			}
		}
		return fileList;
	}
	
	public static void main(String[] args){
		FileTool ft = new FileTool();
		File[] files = ft.listFiles("src/tool", "java");
		for(int i=0;i<files.length;i++)
			System.out.println(files[i].getAbsolutePath());
	}
}